package io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/*
通过提高每次读写的数据量减少实际读写的次数,可以提高读写效率

 */
public class CopyDemo2 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("daomei.jpg");
        FileOutputStream fos = new FileOutputStream("daomei_cp2.jpg");
        /*
        InputStream超类中定义了一个块读取数据的方法
        int read(byte[] data)
        一次性读取给定的字节数组data总长度的字节量,并存入到字节数组中
        返回值表事实及读取到了多少个字节
         */
        long start = System.currentTimeMillis();
        byte[] data = new byte[1024*10];//10kb
        int len;
        while ((len=fis.read(data))!=-1){//每次读取10kb并判断是否读取到末尾
            //将字节数组byte从下标0开始连续len个字节写出(读到多少就写多少)
            fos.write(data,0,len);
        }
        long end = System.currentTimeMillis();
        System.out.println("复制完毕!耗时"+(end-start)+"毫秒!");
        fis.close();
        fos.close();
//        FileInputStream fis = new FileInputStream("daomei.jpg");
//        FileOutputStream fos = new FileOutputStream("daomei_cp2.jpg");
//        long start = System.currentTimeMillis();
//        byte[] data = new byte[1024*10];//10kb
//        while (fis.read(data)!=-1){//每次读取10kb并判断是否读取到末尾
//            fos.write(data);
//        }
//        long end = System.currentTimeMillis();
//        System.out.println("复制完毕!耗时"+(end-start)+"毫秒!");
//        fis.close();
//        fos.close();
    }
}
